Цель: знакомство с понятием нормализации базы данных. Связи между таблицами.
Программное обеспечение: Microsoft Access 2007 либо новее
В ходе разработки базы данных Вы связали между собой таблицы. Вы можете просмотреть связи между таблицами, выбрав команду «Схема данных»:
Просмотрите свою сему данных. Она может отличаться взаимным расположением таблиц, однако связи между таблиуами должны быть теми же.
Если схема данных пуста, добавьте нужные таблицы с помощью контекстного меню (вызывается правой кнопкой мыши):
В этой работе мы продолжим устанавливать связи, причем некоторые из них будут своего рода «каскадными» (строго говоря, транзитивными).
Задание 1. Создание таблицы «Расписание_звонков».
1. Создайте с помощью конструктора таблицу «Расписание_звонков»
2. Поле Код в нашем случае – не Счетчик, а просто Числовой. Дело в том, что поле типа Счетчик нельзя изменять самому. Если допустить при наборе данных ошибку, затем исправить, нужный номер в поле типа Счетчик можно потерять навсегда. Это не страшно, если поле типа «Счетчик» не несет особого смысла кроме связи таблиц. Однако в нашем случае номера пар по порядку должны строго начинаться с 1 и далее строго идти по порядку.
3. Укажите формат для полей «Время_начала» и «Время_окончания»
4. Заполните таблицу по образцу:
и так далее (до вечера).
5. Закройте все объекты Access.
6. Откройте таблицу Расписание в режиме конструктора.
7. Добавьте в таблицу поле «Номер_пары», выберите тип «Мастер подстановки»,
следуйте шагам:
8. Выделите поле, щелкнув по заголовку строки (на рисунке выделено зеленым крестиком)
9. Перетащите поле вверх, расположив после поля «Дата»
10. Теперь сохраните таблицу, перейдите в режим редактирования таблицы и заполните содержание нового поля:
11. Сохраните таблицу.
12. В таблице теперь есть дублирующаяся информация. Поле «Номер_пары» однозначно определяет как время начала, так и время окончания занятия. Теперь можно и нужно удалить поля «Время_начала» и «Время_окончания» из таблицы «Расписание»:
Не перепутайте! В таблице «Расписание_звонков» ничего удалять не надо!
Задание 2. Создание таблицы «Должности»
1. Закройте все открытые объекты Access.
Создайте таблицу «Должности» в режиме конструктора:
3. Перейдите в режим таблицы и занесите в таблицу следующие данные:
(если необходимо, можно добавить и другие записи).
4. Закройте все открытые объекты Access.
5. Откройте таблицу «Преподаватели» в режиме конструктора.
6. Добавьте поле «Должность», выбрав тип «Мастер подстановки»:
7. Создайте подстановку так, чтобы значения поля выбирались из следующего спсика:
8. Заполните значения поля «Должность» в таблице «Преподаватели»:
9. Закройте все открытые объекты Access.
10. Откройте таблицу «Расписание» в режиме конструктора. Поле «Должность» теперь лишнее. Во-первых, такое же поле есть в таблице «Преподаватели». Во-вторых, должность является характеристикой именно преподавателя, а не расписания. Поэтому из таблицы «Расписание» поле «Должность» нужно удалить:
11. Откройте схему данных. Добавьте оставшиеся таблицы. Расположите элементы так, чтобы линии не пересекались:
12. В отчет по работе поместите:
a. скриншот схемы данных;
b. скриншот таблицы «Расписание»
Задание 3. Создание запроса.
После создания множества таблиц и связей некоторая информация «исчезла» из главной таблицы «Расписание». На самом деле ниформация есть, но хранится в дополнительных таблицах. Для получения подробной информации из таблиц можно использовать механизм запросов.
1. Создайте запрос в режиме конструктора
Office 2010 - .
2. Добавьте в запрос все таблицы, кроме таблицы «Расписание_старое»:
3. Добавьте в запрос поле «Дата» из таблицы «Расписание». Для этого можно либо дважды щелкнуть по нему
либо перетащить его на область внизу:
4. Добавьте аналогично поля:
a. из таблицы «Расписание_звонков»: Время_начала, Время_окончания;
b. из таблицы «Дисциплины»: Наименование_дисциплины
c. из таблицы «Виды_занятий»: Наименование_краткое
d. из таблицы «Преподаватели»: Фамилия, Имя, Отчество
e. из таблицы «Должности»: Наименование_краткое Результат:
5. Выполните запрос, перейдя в режим таблицы. Просмотрите содержание получившейся таблицы. Сохраните запрос под именем «Расписание_полное».
6. Следует понимать, что запрос на выборку – это особая форма отображения информации из базы данных, скомпилированная из нескольких таблиц. Запросы на выборку не предназначены для редактирования информации (хотя подлый Access это разрешает).
7. В отчет по работе поместите скриншоты:
a. скриншот запроса в режиме конструктора
b. скриншот запроса в режиме таблицы
8. Запросы позволяют не только отображать информацию, но и добавлять, изменять, удалять, а также изменять структуру таблиц (это уже не запросы на выборку, а запросы на удаление и т.д.). С этими возможностями будем работать на примере другой базы данных и позже.
9. Запросы на выборку отображают информацию в не самом приятном для восприятия человеком виде. Для этого есть отчеты, с которыми будем работать на следующем занятии.
В качестве ответа на задание прикрепите файл-отчет и саму базу данных.